﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using digitwhu.Models.IRepositorys;
using digitwhu.Models;
using digitwhu.Models.Repositorys;

namespace digitwhu.Logic.BusinessLogic
{
    public class UserLogic
    {
        #region 用户
        public static int AddUser(string userName, string password, string email)//用户注册
        {
            //用户注册，返回用户ID，密码用MD5单向加密
            //userName:用户名，即nickname，暂时可以相同
            //password:密码
            //email:注册邮箱，不可相同，登录凭邮箱验证
            //返回值：-1表示邮箱已经存在，-2表示注册失败(未能在表User中创建记录)，正数表示注册成功(返回的是用户的唯一编号)
            var dbContext = new DigitwhuDataContext();
            IUserRepository iuser = new UserRepository(dbContext);
            return iuser.AddUser(userName, password, email);
        }
        public static int GetUserLogin(string email, string password) //用户登录
        {
            //email:登录的邮箱地址
            //password:用户密码
            //返回值说明：正数表示登陆成功(返回用户ID),-1表示密码错误，-2表示用户名不存在
            var dbContext = new DigitwhuDataContext();
            IUserRepository iuser = new UserRepository(dbContext);
            return iuser.GetUserLogin(email, password);
        }
        public static bool UpdateUserInfo(int userId, string realName, decimal studentId, string school,
            DateTime birthday, string homeAddress, string avatar, int dormId,string nickName)//更新用户信息
        {
            //userId:用户编号
            //realName:真实姓名
            //studetnId:学号
            //school:学院
            //birthday:生日
            //homeAddress:家庭住址
            //avatar:头像
            //dormId:公寓Id(是在地图上面的building中公寓编号)
            //nickName:昵称
            //返回值：true:更新用户信息成功 false:更新用户信息失败
            var dbContext = new DigitwhuDataContext();
            IUserRepository iuser = new UserRepository(dbContext);
            return iuser.UpdateUserInfo(userId, realName, studentId, school, birthday, homeAddress, avatar, dormId,nickName);
        }
        public static int UpdateUserPassword(string oldPassword, string newPassword, int userId)//用户更改密码
        {
            //oldPassword:登录的邮箱地址
            //newPassword:用户新密码
            //返回值：-1(用户Id非法)，-2原先密码错误，1表示操作成功
            var dbContext = new DigitwhuDataContext();
            IUserRepository iuser = new UserRepository(dbContext);
            return iuser.UpdateUserPassword(oldPassword, newPassword, userId);
        }
        public static bool GetUserIsInUserAttention(int userPay, int userBe)//查询用户userPay是不是已经关注了用户userBe
        {
            //userPay:主动查询用户编号
            //userBe:被查询用户编号
            //返回值：true:用户userPay关注了用户userBe,false:true:用户userPay没有关注用户userBe
            var dbContext = new DigitwhuDataContext();
            IUserRepository iuser = new UserRepository(dbContext);
            return iuser.GetUserIsInUserAttention(userPay, userBe);
        }
        public static bool GetUserInInUserBlackList(int userMake, int userBe)//查询用户userMake是不是已经拉黑了用户userBe
        {
            //userPay:主动查询用户编号
            //userBe:被查询用户编号
            //返回值：true:用户userMake已经拉黑了用户userBe,false:true:用户userMake没有拉黑用户userBe
            var dbContext = new DigitwhuDataContext();
            IUserRepository iuser = new UserRepository(dbContext);
            return iuser.GetUserInInUserBlackList(userMake, userBe);
        }
        #endregion
    }
}